[포스코x코딩온] 웹 풀스택 과정 7기 5주차 화요일 회고
목차
DB
-
Table(Relation) : 행과 열로 이루어진 2차원 테이블
- Column(Attribute) : 테이블의 열, 각각의 속성
- Primary Key : 테이블에서 행을 구분할 수 있는 유일한 값
- Foreign Key : 다른 테이블의 Primary Key를 참조하는 속성
- Row(Tuple) : 테이블의 행, 하나의 데이터
- Column(Attribute) : 테이블의 열, 각각의 속성
-
종류
- MySQL : 오픈 소스 RDBMS 였으나 오라클에 인수되어 현재는 오라클이 관리하고 있다.
- Oracle
- MariaDB
- MongoDB
SQL문
DDL
DDL(Data Definition Language)은 데이터베이스를 정의할 때 사용하는 구문이다.
DDL은 데이터베이스, 테이블, 뷰, 인덱스 등을 생성, 변경, 삭제하는데 사용한다.
CREATE
: 생성ALTER
: 변경TRUNCATE
: 열 모두 삭제DROP
: 테이블 자체를 삭제
DML
DML(Data Manipulation Language)은 데이터를 조작하는데 사용하는 구문이다.
DML은 데이터를 검색, 삽입, 수정, 삭제하는데 사용한다.
SELECT
: 검색, 조회INSERT
: 삽입UPDATE
: 수정DELETE
: 삭제
MySQL
MySQL 설치 및 실행
MySQL 설치시 오류
brew로 MySQL 설치 후 서버를 열려고 하면 계속 오류가 났다.
ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/<컴퓨터 이름>.local.pid).
라느니 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
라느니 계속 검색 결과를 따라해도 오류에 오류만 나올 뿐이었다.
삭제 후 재설치를 해도 똑같은 오류를 뱉었다.
그러다 문득 이전에 mariaDB를 설치를 했던 적이 있는데 그 때 설정해둔게 오류가 생긴게 아닐까라는 의심이 들었다.
brew uninstall mysql
로 삭제 후 /opt/homebrew/var
디렉토리를 확인 했더니 mysql
디렉토리가 남아있었다.
rm -rf /opt/homebrew/var/mysql
로 삭제 후 다시 설치를 하니 정상적으로 작동했다.
이걸로 두 시간을 날렸다. 아까운 내 시간...😵💫
MySQL VSCode 연동
VSCode 확장 탭에서 MySQL을 검색해 가장 먼저 나오는 MySQL를 설치했다.
실행 했더니 Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
라는 에러가 떴다.
아마 인증과정에서 일어난 문제 같다.
에러문을 검색해보니 비슷한 문제를 겪은 글이 있었다.
답변에 나온 해결책은 다음과 같았다.
터미넗에서 MySQL을 실행한 뒤 해당 명령문을 입력하니 깔끔하게 실행되었다.
해당 SQL문의 IDENTIFIED WITH mysql_native_password BY
부분을 검색해서 나온 글을 보니 인증 과정 문제가 맞는 것 같다.
외래키
제약조건
- CASCADE: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드도 업데이트/삭제
- SET NULL: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드는 NULL로 업데이트
- NO ACTION: 부모 테이블의 레코드가 업데이트/삭제돼도 자식 테이블의 레코드는 변화 없음
- SET DEFAULT: 부모 테이블의 레코드가 업데이트/삭제되면 자식 테이블의 레코드는 DEFAULT로 업데이트
- RESTRICT: 부모 테이블의 레코드가 업데이트/삭제되지 않도록 함